/**
 * Copyright (C) 2005 the Lexi Project.
 *
 * This file is part of the Lexi document editor.
 *
 * Lexi is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 * 
 * Lexi is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with GNU Classpath; see the file COPYING.  If not, write to the
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 *
 * Linking this library statically or dynamically with other modules is
 * making a combined work based on this library.  Thus, the terms and
 * conditions of the GNU General Public License cover the whole combination.
 */

package com.jmonkey.export;

import java.awt.Color;
import java.io.File;

public final class Runtime {

  public Runtime() {
    super();
  }

  /**
   * This method checks a directory to make sure it exists. If it doesn't, it is
   * created.
   * 
   * @return the ensured directory object.
   * @param directory the directory to ensure.
   */
  public final static File ensureDirectory(File directory) {
    if (!directory.exists() || (directory.exists() && !directory.isDirectory())) {
      directory.mkdirs();
    }
    return directory;
  }
  
  /**
   * This method checks a directory to make sure it exists. If it doesn't, 
   * it is created.
   * 
   * @return the absolute path to the ensured directory.
   * @param directory the name of directory to ensure.
   */
  public final static String ensureDirectory(String directory) {
    File dir = new File(directory);
    // FIXME - what if the 'dir' exists, but it isn't a directory?
    // FIXME - what if we cannot create the directory?
    if (!dir.exists() || (dir.exists() && !dir.isDirectory())) {
      dir.mkdirs();
    }
    return dir.getAbsolutePath();
  }

  /**
   * Given any color, return white or black; whichever contrasts better.
   * Constants taken from question 9 of the color faq at
   * http://www.inforamp.net/~poynton/notes/colour_and_gamma/ColorFAQ.html
   */
  public static final Color getContrastingTextColor(Color c) {
    double brightness = (c.getRed() * 0.2125 + c.getGreen() * 0.7145 +
                         c.getBlue() * 0.0721);
    return (brightness < 128.0) ? Color.white : Color.black;
  }
}
